<?php
namespace Admin\Controller;
use Think\Controller;
/**
 * 好友类
 * 用来对好友信息表进行增删改查
 * 
 * 
 * @author hansir
 */
class FriendsController extends Controller{
    /**
	 * 添加好友
	 * @var int $uid1 	当前登录用户的uid
	 * @var int $uid2 	要加为好友的用户的uid
	 * @var obj $F_Model 	好友表Model对象
	 * @var obj $U_Model	用户表Model对象
	 * @var arr $remoeve	非好友用户的ID
	 * @var str $map		非好友用户的ID
	 * @var arr $where	查询条件
	 * @var arr $users	非好友用户信息
	 * 
	 * @todo  功能整合时需要把验证用户登录状态功能实现
	 * @author hansir
	 */
    public function friendsAdd(){
    	//$is_in = $this->cookie_check();		//验证用户是否登录
    	$user = $this->userMsg();		//取得登录用户的信息并赋值给$user
    	$uid1 = $user['uid'];			//取得登录用户的uid并赋值给$uid1
    	if ($_GET) {					//判断地址栏是否有参数传入
    		//为当前用户添加好友
	    	$uid2 = $_GET['uid2'];		//取得地址栏传入的uid
	    	$F_Model = D('friends');	//实例化好友表Model对象并赋值给$F_Model
	    	$F_Model->uid1 = $uid1;		//把用户uid赋值给$F_Model 中的uid1属性
	    	$F_Model->uid2 = $uid2;		//把好友uid赋值给$F_Model 中的uid2属性
	    	$F_Model->create();			//验证$F_Model中的字段是否合法
	    	$F_Model->add();			//把$F_Model中的字段添加到数据库
	    	//把当前用户添加为对方的好友
	    	$F_Model->uid1 = $uid2;		//把用户uid赋值给$F_Model 中的uid2属性
	    	$F_Model->uid2 = $uid1;		//把好友uid赋值给$F_Model 中的uid2属性
	    	$F_Model->create();			//验证$F_Model中的字段是否合法
	    	$F_Model->add();			//把$F_Model中的字段添加到数据库
	    	//添加完成后跳转到好友列表页面
	    	$this->redirect('/Admin/Friends/friendslist');
	    	//如果地址栏没有参数传入，查出非好友用户并分配到模板
    	}else{							
    		$U_Modle = D('users');		//实例化用户信息表赋值给$U_Model
			$F_Model = D('friends');	//实例化好友表赋值给$F_Model
			//查出当前用户所有好友的UID并赋值给$F_Uid
			$F_Uid = $F_Model->field('uid2')->where("uid1= $uid1")->select();
    		//var_dump($F_Model);exit();
			//遍历$F_Uid把好友UID取出赋值给数组$remove
			foreach ($F_Uid as $k => $v) {
			$remove[] = $v['uid2'];
			}
			$remove[] = $uid1;			//把用户ID加入$remove数组
			//用,将$remove拆成字符串
			$map = implode(',',$remove);
			//拼接$where查询条件
			$where['uid'] = array('notin',$map);
			//查询出除自身和好友之外所有用户的uid和username赋值给$users
    		$users = $U_Modle->field(array('uid','username'))->
    		where($where)->select();
    		//把$users分配给模板
    		$this->assign('us',$users);
    		//调用模板
    		$this->display();
    	}
    }
	/**
	 * 好友列表
	 * 用来展示好友列表
	 * @var obj 	$F_Model 	实例化好友表Model对象
	 * @var str 	$is_in 	用户是否已登录，已登录为'y'未登录为'n'
	 * @var arr 	$F_ids 	好友ID(二维数组)
	 * @var arr 	$F_id 	好友ID（一位数组）
	 * @var str 	$map 	用逗号将$F_id拆成字符串
	 * @var arr 	$where 	查询条件
	 * @var arr 	$friends 好友信息
	 * 
	 * @todo 		若用户没有登录跳转到登录页面
	 * @author 	hansir
	 */
	public function friendsList(){
		$is_in = $this->cookie_check();	//判断是否有用户登录
		$F_Model = D('friends');			//实例化friends表Model类
		//查询当前用户的好友UID
		$F_ids = $F_Model->field('uid2')->where('uid1=1')->select();
		//判断如果好友不存在输出还没有好友
		if (!$F_ids) {
			echo "您还没有好友";
		}
		//遍历$F_ids 将uid2 赋值给数组 $F_id
		foreach ($F_ids as $k => $v) {
			$F_id[] = $v['uid2'];
		}
		$map = implode(',',$F_id); 		//把 $F_id 拆分成字符串
		$where['uid'] = array('in',$map);  //拼接查询条件
		//查user表获取好友信息
		$friends = D('users')->field('uid,username')->where($where)->select();
		$this->assign('fr',$friends); 	//分配到模板
		$this->display();				//调用模板
	}
	/**
	 * 获取已登录用户信息
	 * @var str $name 用户cookie中的用户名
	 * @var obj $row  实例化users表的Model类
	 * @var obj $user 用户表中查出的当前用户的信息
	 * @return 返回当前用户信息
	 * @author hansir
	 */
	public function userMsg(){
    	$name = cookie('username'); //取出cookie中的用户名
    	$row = D('users');			//实例化usersModel类
    	//查询当前用户信息
    	$user = $row->where('username='.'"'.$name.'"')->find();
    	return $user;	//返回当前用户信息
	}
    /**
	 * 检查用户cookie是否合法
	 * @param 无参数
	 * @author hansir
	 * @author hansir
	 * @return 若用户cookie合法返回 'y' 不哈法返回 'n'
	 */

    function cookie_check(){
	    if (cookie('username')) {
		    if(md5(cookie('username').C('COOKIE_SALT')) === cookie('coode')){
		        return 'y';
		    }else{
		        return 'n';
		    }
	    }else{
	    	return 'n';
	    }
    }
}